<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 1、求1 + 2！ + 3！ + 4！....+20!的值
    - 2！ = 2 * 1
    - 3！ = 3 * 2 * 1

    2、求叠数之和(1-9)
    - 如输入的是 n=3， a=2；则输出 2 + 22 + 222 的值。
    - 如输入的是 n=4， a=3；输出 3 + 33 + 333 + 3333的值
    - n = 3,相加三次,每次相加比前一次相加的数,多一位
    - 每次多的这个位数的值为a, 如果a为2则 2 * 10+2, 22 * 10+2


    3、输入两个数求两个数的最大公约数
    - 先取出两个数中最小的数
    - 最小的数不断递减，取出能同时被两个数整除的数，并退出循环

    4、输入两个数，求两个数的最小公倍数
    - 先取出两个数中最大的数
    - 最大的数不断递增，提出能整除两个数的那个数，然后退出循环


    5、回文数

    - 要求：打印10000~99999区间的回文数字，形如12321 23432 34543等
    - 提示: 回文数需同时满足下面的条件
    [1] 第一位和倒数第一位相等
    [2] 第二位和倒数第二位相等
    [2] 第二位等于第一位数加一
    [3] 第三位等于第二位数加一


    6、生成任意表格 -->
    <script>
        // 1、求1 + 2！ + 3！ + 4！....+20!的值
        // - 2！ = 2 * 1
        // - 3！ = 3 * 2 * 1
        window.onload = function () {
            console.log("第一题:");
            let num1 = 0;
            for (let i = 1; i <= 20; i++) {
                let ji = 1;
                for (let j = 1; j <= i; j++) {
                    ji *= j
                }
                num1 = num1 + ji
            }
            console.log("前二十个数的阶乘和为" + num1);
            // 2、求叠数之和(1 - 9)
            // - 如输入的是 n = 3， a = 2；则输出 2 + 22 + 222 的值。
            // - 如输入的是 n = 4， a = 3；输出 3 + 33 + 333 + 3333的值
            // - n = 3, 相加三次, 每次相加比前一次相加的数, 多一位
            // - 每次多的这个位数的值为a, 如果a为2则 2 * 10 + 2, 22 * 10 + 2
            //2+2+10*2+2+100*2
            console.log("第二题");
            let num2 = prompt("请输入你要叠多少次：");
            let num3 = prompt("请输入你要叠的数字（1~9）");
            let zongshu = 0;
            let shu = 0;
            if (num3 <= 9 && num3 >= 1) {
                for (let i = 0; i < num2; i++) {
                    // for (let j = 1; j <= i; j++) {
                    shu = shu * 10 + num3 * 1
                    zongshu = zongshu + shu
                    // zonghsu = zongshu + num3
                    // }
                }
            }
            console.log("叠数和为：" + zongshu);
            // 3、输入两个数求两个数的最大公约数
            //     - 先取出两个数中最小的数
            //     - 最小的数不断递减，取出能同时被两个数整除的数，并退出循环
            console.log("第三题");
            let num4 = prompt("你要求的第一个最大公约数");
            let num5 = prompt("你要求的第二个最大公约数");
            let zuixiao = num4
            if (num4 > num5) {
                zuixiao = num5;
            }
            while (zuixiao >= 1) {
                if (num4 % zuixiao == 0 && num5 % zuixiao == 0) {
                    break;
                }
                zuixiao--;
            }
            console.log("最大公约数为:" + zuixiao);
            // 4、输入两个数，求两个数的最小公倍数
            //     - 先取出两个数中最大的数
            //     - 最大的数不断递增，提出能整除两个数的那个数，然后退出循环
            console.log("第四题");
            let num6 = prompt("你要求的第一个最小公倍数");
            let num7 = prompt("你要求的第二个最小公倍数");
            let zuida = num6;
            if (num7 > num6) {
                zuida = num7;
            }
            while (zuida >= 1) {
                if (zuida % num6 == 0 && zuida % num7 == 0) {
                    break;
                }
                zuida++;
            }
            console.log("最大公倍数为:" + zuida);
            // 5、回文数

            //     - 要求：打印10000~99999区间的回文数字，形如12321 23432 34543等
            //         - 提示: 回文数需同时满足下面的条件
            //         [1] 第一位和倒数第一位相等
            //         [2] 第二位和倒数第二位相等
            //         [2] 第二位等于第一位数加一
            //         [3] 第三位等于第二位数加一
            console.log("第五题");
            let hui = ""
            for (let num8 = 10000; num8 <= 99999; num8++) {
                let n1 = parseInt(num8 / 10000);
                let n2 = parseInt(num8 / 1000 - n1 * 10);
                let n3 = parseInt(num8 / 100 - n1 * 100 - n2 * 10);
                let n4 = parseInt(num8 / 10 - n1 * 1000 - n2 * 100 - n3 * 10);
                let n5 = num8 - n1 * 10000 - n2 * 1000 - n3 * 100 - n4 * 10
                if (n1 == n5 && n2 == n4 && n2 == n1 + 1 && n3 == n2 + 1) {
                    // console.log(num8)
                    hui = hui + num8 + " "
                }
            }
            console.log("回文为：" + hui)
        }
    </script>
</body>

</html>